home *** CD-ROM | disk | FTP | other *** search
/ Champak 50 / Volume 50 - JOGO DISK .iso / Games / mallcrawl.swf / scripts / __Packages / mx / controls / scrollClasses / ScrollBar.as next >
Encoding:
Text File  |  2007-09-28  |  12.7 KB  |  407 lines

  1. class mx.controls.scrollClasses.ScrollBar extends mx.core.UIComponent
  2. {
  3.    var isScrolling;
  4.    var scrollTrack_mc;
  5.    var scrollThumb_mc;
  6.    var __height;
  7.    var boundingBox_mc;
  8.    var upArrow_mc;
  9.    var _minHeight;
  10.    var _minWidth;
  11.    var downArrow_mc;
  12.    var dispatchEvent;
  13.    var minMode;
  14.    var maxMode;
  15.    var plusMode;
  16.    var minusMode;
  17.    var scrolling;
  18.    static var symbolOwner = mx.core.UIComponent;
  19.    var className = "ScrollBar";
  20.    var minPos = 0;
  21.    var maxPos = 0;
  22.    var pageSize = 0;
  23.    var largeScroll = 0;
  24.    var smallScroll = 1;
  25.    var _scrollPosition = 0;
  26.    var scrollTrackName = "ScrollTrack";
  27.    var scrollTrackOverName = "";
  28.    var scrollTrackDownName = "";
  29.    var upArrowName = "BtnUpArrow";
  30.    var upArrowUpName = "ScrollUpArrowUp";
  31.    var upArrowOverName = "ScrollUpArrowOver";
  32.    var upArrowDownName = "ScrollUpArrowDown";
  33.    var downArrowName = "BtnDownArrow";
  34.    var downArrowUpName = "ScrollDownArrowUp";
  35.    var downArrowOverName = "ScrollDownArrowOver";
  36.    var downArrowDownName = "ScrollDownArrowDown";
  37.    var thumbTopName = "ScrollThumbTopUp";
  38.    var thumbMiddleName = "ScrollThumbMiddleUp";
  39.    var thumbBottomName = "ScrollThumbBottomUp";
  40.    var thumbGripName = "ScrollThumbGripUp";
  41.    static var skinIDTrack = 0;
  42.    static var skinIDTrackOver = 1;
  43.    static var skinIDTrackDown = 2;
  44.    static var skinIDUpArrow = 3;
  45.    static var skinIDDownArrow = 4;
  46.    static var skinIDThumb = 5;
  47.    var idNames = new Array("scrollTrack_mc","scrollTrackOver_mc","scrollTrackDown_mc","upArrow_mc","downArrow_mc");
  48.    var clipParameters = {minPos:1,maxPos:1,pageSize:1,scrollPosition:1,lineScrollSize:1,pageScrollSize:1,visible:1,enabled:1};
  49.    static var mergedClipParameters = mx.core.UIObject.mergeClipParameters(mx.controls.scrollClasses.ScrollBar.prototype.clipParameters,mx.core.UIComponent.prototype.clipParameters);
  50.    var initializing = true;
  51.    function ScrollBar()
  52.    {
  53.       super();
  54.    }
  55.    function get scrollPosition()
  56.    {
  57.       return this._scrollPosition;
  58.    }
  59.    function set scrollPosition(pos)
  60.    {
  61.       this._scrollPosition = pos;
  62.       if(this.isScrolling != true)
  63.       {
  64.          pos = Math.min(pos,this.maxPos);
  65.          pos = Math.max(pos,this.minPos);
  66.          var _loc3_ = (pos - this.minPos) * (this.scrollTrack_mc.height - this.scrollThumb_mc._height) / (this.maxPos - this.minPos) + this.scrollTrack_mc.top;
  67.          this.scrollThumb_mc.move(0,_loc3_);
  68.       }
  69.    }
  70.    function get pageScrollSize()
  71.    {
  72.       return this.largeScroll;
  73.    }
  74.    function set pageScrollSize(lScroll)
  75.    {
  76.       this.largeScroll = lScroll;
  77.    }
  78.    function set lineScrollSize(sScroll)
  79.    {
  80.       this.smallScroll = sScroll;
  81.    }
  82.    function get lineScrollSize()
  83.    {
  84.       return this.smallScroll;
  85.    }
  86.    function get virtualHeight()
  87.    {
  88.       return this.__height;
  89.    }
  90.    function init(Void)
  91.    {
  92.       super.init();
  93.       this._scrollPosition = 0;
  94.       this.tabEnabled = false;
  95.       this.focusEnabled = false;
  96.       this.boundingBox_mc._visible = false;
  97.       this.boundingBox_mc._width = this.boundingBox_mc._height = 0;
  98.    }
  99.    function createChildren(Void)
  100.    {
  101.       if(this.scrollTrack_mc == undefined)
  102.       {
  103.          this.setSkin(mx.controls.scrollClasses.ScrollBar.skinIDTrack,this.scrollTrackName);
  104.       }
  105.       this.scrollTrack_mc.visible = false;
  106.       var _loc3_ = new Object();
  107.       _loc3_.enabled = false;
  108.       _loc3_.preset = mx.controls.SimpleButton.falseDisabled;
  109.       _loc3_.initProperties = 0;
  110.       _loc3_.autoRepeat = true;
  111.       _loc3_.tabEnabled = false;
  112.       var _loc2_ = undefined;
  113.       if(this.upArrow_mc == undefined)
  114.       {
  115.          _loc2_ = this.createButton(this.upArrowName,"upArrow_mc",mx.controls.scrollClasses.ScrollBar.skinIDUpArrow,_loc3_);
  116.       }
  117.       _loc2_.buttonDownHandler = this.onUpArrow;
  118.       _loc2_.clickHandler = this.onScrollChanged;
  119.       this._minHeight = _loc2_.height;
  120.       this._minWidth = _loc2_.width;
  121.       if(this.downArrow_mc == undefined)
  122.       {
  123.          _loc2_ = this.createButton(this.downArrowName,"downArrow_mc",mx.controls.scrollClasses.ScrollBar.skinIDDownArrow,_loc3_);
  124.       }
  125.       _loc2_.buttonDownHandler = this.onDownArrow;
  126.       _loc2_.clickHandler = this.onScrollChanged;
  127.       this._minHeight += _loc2_.height;
  128.    }
  129.    function createButton(linkageName, id, skinID, o)
  130.    {
  131.       if(skinID == mx.controls.scrollClasses.ScrollBar.skinIDUpArrow)
  132.       {
  133.          o.falseUpSkin = this.upArrowUpName;
  134.          o.falseDownSkin = this.upArrowDownName;
  135.          o.falseOverSkin = this.upArrowOverName;
  136.       }
  137.       else
  138.       {
  139.          o.falseUpSkin = this.downArrowUpName;
  140.          o.falseDownSkin = this.downArrowDownName;
  141.          o.falseOverSkin = this.downArrowOverName;
  142.       }
  143.       var _loc3_ = this.createObject(linkageName,id,skinID,o);
  144.       this[id].visible = false;
  145.       this[id].useHandCursor = false;
  146.       return _loc3_;
  147.    }
  148.    function createThumb(Void)
  149.    {
  150.       var _loc2_ = new Object();
  151.       _loc2_.validateNow = true;
  152.       _loc2_.tabEnabled = false;
  153.       _loc2_.leftSkin = this.thumbTopName;
  154.       _loc2_.middleSkin = this.thumbMiddleName;
  155.       _loc2_.rightSkin = this.thumbBottomName;
  156.       _loc2_.gripSkin = this.thumbGripName;
  157.       this.createClassObject(mx.controls.scrollClasses.ScrollThumb,"scrollThumb_mc",mx.controls.scrollClasses.ScrollBar.skinIDThumb,_loc2_);
  158.    }
  159.    function setScrollProperties(pSize, mnPos, mxPos, ls)
  160.    {
  161.       var _loc4_ = undefined;
  162.       var _loc2_ = this.scrollTrack_mc;
  163.       this.pageSize = pSize;
  164.       this.largeScroll = !(ls != undefined && ls > 0) ? pSize : ls;
  165.       this.minPos = Math.max(mnPos,0);
  166.       this.maxPos = Math.max(mxPos,0);
  167.       this._scrollPosition = Math.max(this.minPos,this._scrollPosition);
  168.       this._scrollPosition = Math.min(this.maxPos,this._scrollPosition);
  169.       if(this.maxPos - this.minPos > 0 && this.enabled)
  170.       {
  171.          var _loc5_ = this._scrollPosition;
  172.          if(!this.initializing)
  173.          {
  174.             this.upArrow_mc.enabled = true;
  175.             this.downArrow_mc.enabled = true;
  176.          }
  177.          _loc2_.onPress = _loc2_.onDragOver = this.startTrackScroller;
  178.          _loc2_.onRelease = this.releaseScrolling;
  179.          _loc2_.onDragOut = _loc2_.stopScrolling = this.stopScrolling;
  180.          _loc2_.onReleaseOutside = this.releaseScrolling;
  181.          _loc2_.useHandCursor = false;
  182.          if(this.scrollThumb_mc == undefined)
  183.          {
  184.             this.createThumb();
  185.          }
  186.          var _loc3_ = this.scrollThumb_mc;
  187.          if(this.scrollTrackOverName.length > 0)
  188.          {
  189.             _loc2_.onRollOver = this.trackOver;
  190.             _loc2_.onRollOut = this.trackOut;
  191.          }
  192.          _loc4_ = this.pageSize / (this.maxPos - this.minPos + this.pageSize) * _loc2_.height;
  193.          if(_loc4_ < _loc3_.minHeight)
  194.          {
  195.             if(_loc2_.height < _loc3_.minHeight)
  196.             {
  197.                _loc3_.visible = false;
  198.             }
  199.             else
  200.             {
  201.                _loc4_ = _loc3_.minHeight;
  202.                _loc3_.visible = true;
  203.                _loc3_.setSize(this._minWidth,_loc3_.minHeight + 0);
  204.             }
  205.          }
  206.          else
  207.          {
  208.             _loc3_.visible = true;
  209.             _loc3_.setSize(this._minWidth,_loc4_);
  210.          }
  211.          _loc3_.setRange(this.upArrow_mc.height + 0,this.virtualHeight - this.downArrow_mc.height - _loc3_.height,this.minPos,this.maxPos);
  212.          _loc5_ = Math.min(_loc5_,this.maxPos);
  213.          this.scrollPosition = Math.max(_loc5_,this.minPos);
  214.       }
  215.       else
  216.       {
  217.          this.scrollThumb_mc.visible = false;
  218.          if(!this.initializing)
  219.          {
  220.             this.upArrow_mc.enabled = false;
  221.             this.downArrow_mc.enabled = false;
  222.          }
  223.          delete _loc2_.onPress;
  224.          delete _loc2_.onDragOver;
  225.          delete _loc2_.onRelease;
  226.          delete _loc2_.onDragOut;
  227.          delete _loc2_.onRollOver;
  228.          delete _loc2_.onRollOut;
  229.          delete _loc2_.onReleaseOutside;
  230.       }
  231.       if(this.initializing)
  232.       {
  233.          this.scrollThumb_mc.visible = false;
  234.       }
  235.    }
  236.    function setEnabled(enabledFlag)
  237.    {
  238.       super.setEnabled(enabledFlag);
  239.       this.setScrollProperties(this.pageSize,this.minPos,this.maxPos,this.largeScroll);
  240.    }
  241.    function draw(Void)
  242.    {
  243.       if(this.initializing)
  244.       {
  245.          this.initializing = false;
  246.          this.scrollTrack_mc.visible = true;
  247.          this.upArrow_mc.visible = true;
  248.          this.downArrow_mc.visible = true;
  249.       }
  250.       this.size();
  251.    }
  252.    function size(Void)
  253.    {
  254.       if(this._height == 1)
  255.       {
  256.          return undefined;
  257.       }
  258.       if(this.upArrow_mc == undefined)
  259.       {
  260.          return undefined;
  261.       }
  262.       var _loc3_ = this.upArrow_mc.height;
  263.       var _loc2_ = this.downArrow_mc.height;
  264.       this.upArrow_mc.move(0,0);
  265.       var _loc4_ = this.scrollTrack_mc;
  266.       _loc4_._y = _loc3_;
  267.       _loc4_._height = this.virtualHeight - _loc3_ - _loc2_;
  268.       this.downArrow_mc.move(0,this.virtualHeight - _loc2_);
  269.       this.setScrollProperties(this.pageSize,this.minPos,this.maxPos,this.largeScroll);
  270.    }
  271.    function dispatchScrollEvent(detail)
  272.    {
  273.       this.dispatchEvent({type:"scroll",detail:detail});
  274.    }
  275.    function isScrollBarKey(k)
  276.    {
  277.       if(k == 36)
  278.       {
  279.          if(this.scrollPosition != 0)
  280.          {
  281.             this.scrollPosition = 0;
  282.             this.dispatchScrollEvent(this.minMode);
  283.          }
  284.          return true;
  285.       }
  286.       if(k == 35)
  287.       {
  288.          if(this.scrollPosition < this.maxPos)
  289.          {
  290.             this.scrollPosition = this.maxPos;
  291.             this.dispatchScrollEvent(this.maxMode);
  292.          }
  293.          return true;
  294.       }
  295.       return false;
  296.    }
  297.    function scrollIt(inc, mode)
  298.    {
  299.       var _loc3_ = this.smallScroll;
  300.       if(inc != "Line")
  301.       {
  302.          _loc3_ = this.largeScroll != 0 ? this.largeScroll : this.pageSize;
  303.       }
  304.       var _loc2_ = this._scrollPosition + mode * _loc3_;
  305.       if(_loc2_ > this.maxPos)
  306.       {
  307.          _loc2_ = this.maxPos;
  308.       }
  309.       else if(_loc2_ < this.minPos)
  310.       {
  311.          _loc2_ = this.minPos;
  312.       }
  313.       if(this.scrollPosition != _loc2_)
  314.       {
  315.          this.scrollPosition = _loc2_;
  316.          var _loc4_ = mode >= 0 ? this.plusMode : this.minusMode;
  317.          this.dispatchScrollEvent(inc + _loc4_);
  318.       }
  319.    }
  320.    function startTrackScroller(Void)
  321.    {
  322.       this._parent.pressFocus();
  323.       if(this._parent.scrollTrackDownName.length > 0)
  324.       {
  325.          if(this._parent.scrollTrackDown_mc == undefined)
  326.          {
  327.             this._parent.setSkin(mx.controls.scrollClasses.ScrollBar.skinIDTrackDown,this.scrollTrackDownName);
  328.          }
  329.          else
  330.          {
  331.             this._parent.scrollTrackDown_mc.visible = true;
  332.          }
  333.       }
  334.       this._parent.trackScroller();
  335.       this._parent.scrolling = setInterval(this._parent,"scrollInterval",this.getStyle("repeatDelay"),"Page",-1);
  336.    }
  337.    function scrollInterval(inc, mode)
  338.    {
  339.       clearInterval(this.scrolling);
  340.       if(inc == "Page")
  341.       {
  342.          this.trackScroller();
  343.       }
  344.       else
  345.       {
  346.          this.scrollIt(inc,mode);
  347.       }
  348.       this.scrolling = setInterval(this,"scrollInterval",this.getStyle("repeatInterval"),inc,mode);
  349.    }
  350.    function trackScroller(Void)
  351.    {
  352.       if(this.scrollThumb_mc._y + this.scrollThumb_mc.height < this._ymouse)
  353.       {
  354.          this.scrollIt("Page",1);
  355.       }
  356.       else if(this.scrollThumb_mc._y > this._ymouse)
  357.       {
  358.          this.scrollIt("Page",-1);
  359.       }
  360.    }
  361.    function dispatchScrollChangedEvent(Void)
  362.    {
  363.       this.dispatchEvent({type:"scrollChanged"});
  364.    }
  365.    function stopScrolling(Void)
  366.    {
  367.       clearInterval(this._parent.scrolling);
  368.       this._parent.scrollTrackDown_mc.visible = false;
  369.    }
  370.    function releaseScrolling(Void)
  371.    {
  372.       this._parent.releaseFocus();
  373.       this.stopScrolling();
  374.       this._parent.dispatchScrollChangedEvent();
  375.    }
  376.    function trackOver(Void)
  377.    {
  378.       if(this._parent.scrollTrackOverName.length > 0)
  379.       {
  380.          if(this._parent.scrollTrackOver_mc == undefined)
  381.          {
  382.             this._parent.setSkin(mx.controls.scrollClasses.ScrollBar.skinIDTrackOver,this.scrollTrackOverName);
  383.          }
  384.          else
  385.          {
  386.             this._parent.scrollTrackOver_mc.visible = true;
  387.          }
  388.       }
  389.    }
  390.    function trackOut(Void)
  391.    {
  392.       this._parent.scrollTrackOver_mc.visible = false;
  393.    }
  394.    function onUpArrow(Void)
  395.    {
  396.       this._parent.scrollIt("Line",-1);
  397.    }
  398.    function onDownArrow(Void)
  399.    {
  400.       this._parent.scrollIt("Line",1);
  401.    }
  402.    function onScrollChanged(Void)
  403.    {
  404.       this._parent.dispatchScrollChangedEvent();
  405.    }
  406. }
  407.